#ifndef __M_RECT_VIEW_H__
#define __M_RECT_VIEW_H__

#include "gui/gui.h"

typedef View RectView;

#define RectViewSetLayoutGravity(rectView, gravity) ViewSetLayoutGravity(rectView, gravity)
#define RectViewGetLaoyoutGravity(rectView) ViewGetLaoyoutGravity(rectView)

#define RectViewSetLayoutMargin(rectView, left, right, top, bottom) ViewSetLayoutMargin(rectView, left, right, top, bottom)
#define RectViewGetLayoutMargin(rectView, left, right, top, bottom) ViewGetLayoutMargin(rectView, left, right, top, bottom)

#define RectViewSetLayoutSize(rectView, layout_w, layout_h) ViewSetLayoutSize(rectView, layout_w, layout_h)
#define RectViewGetLayoutSize(rectView, layout_w, layout_h) ViewGetLayoutSize(rectView, layout_w, layout_h)

#define RectViewSetLayoutAvailableSize(rectView, available_w, available_h) ViewSetLayoutAvailableSize(rectView, available_w, available_h)
#define RectViewGetLayoutAvailableSize(rectView, available_w, available_h) ViewGetLayoutAvailableSize(rectView, available_w, available_h)

#define RectViewSetLayoutPosition(rectView, layout_x, layout_y) ViewSetLayoutPosition(rectView, layout_x, layout_y)
#define RectViewGetLayoutPosition(rectView, layout_x, layout_y) ViewGetLayoutPosition(rectView, layout_x, layout_y)

#define RectViewSetVisibility(rectView, visibility) ViewSetVisibility(rectView, visibility)
#define RectViewGetVisibility(rectView) ViewGetVisibility(rectView)

#define RectViewSetOrientation(rectView, orientation) ViewSetOrientation(rectView, orientation)
#define RectViewGetOrientation(rectView) ViewGetOrientation(rectView)

#define RectViewSetGravity(rectView, gravity) ViewSetGravity(rectView, gravity)
#define RectViewGetGravity(rectView) ViewGetGravity(rectView)

#define RectViewSetPadding(rectView, left, right, top, bottom) ViewSetPadding(rectView, left, right, top, bottom)
#define RectViewGetPadding(rectView, left, right, top, bottom) ViewGetPadding(rectView, left, right, top, bottom)

#define RectViewSetAutoFree(rectView, auto_free) ViewSetAutoFree(rectView, auto_free)
#define RectViewIsAutoFree(rectView) ViewIsAutoFree(rectView)

#define RectViewSetFocus(view, focused) ViewSetFocus(view, focused)
#define RectViewIsFocused(view) ViewIsFocused(view)

#define RectViewSetBgColor(rectView, color) ViewSetBgColor(rectView, color)
#define RectViewGetBgColor(rectView) ViewGetBgColor(rectView)

#define RectViewSetUserData(rectView, data) ViewSetUserData(rectView, data)
#define RectViewGetUserData(rectView) ViewGetUserData(rectView)

#define RectViewGetMeasuredSize(rectView, measured_w, measured_h) ViewGetMeasuredSize(rectView, measured_w, measured_h)
#define RectViewGetWrapSize(rectView, wrap_w, wrap_h) ViewGetWrapSize(rectView, wrap_w, wrap_h)
#define RectViewGetOccupySize(rectView, occupy_w, occupy_h) ViewGetOccupySize(rectView, occupy_w, occupy_h)
#define RectViewGetMeasuredContentSize(rectView, measured_content_w, measured_content_h) ViewGetMeasuredContentSize(rectView, measured_content_w, measured_content_h)
#define RectViewGetWrapContentSize(rectView, wrap_content_w, wrap_content_h) ViewGetWrapContentSize(rectView, wrap_content_w, wrap_content_h)

int RectViewSetRectColor(RectView *rectView, uint32_t color);
uint32_t RectViewGetRectColor(RectView *rectView);

RectView *NewRectView();
int RectViewInit(RectView *rectView);
int RectViewDeinit(RectView *rectView);
int RectViewDestroy(RectView *rectView);
int RectViewMeasure(RectView *rectView);
int RectViewDraw(RectView *rectView);

#endif
